10 REM  BY RICHARD PORTER 
20 CALL CLEAR
30 PRINT "FIGHTER COMMAND"
40 RANDOMIZE
50 DIM FIELD(8,15)
60 DIM RAFROW(3)
70 DIM RAFCOL(3)
80 DIM LUFTROW(5)
90 DIM LUFTCOL(5)
100 GOSUB 3270
110 GOSUB 2020
120 CALL CLEAR
130 RK=0
140 LK=0
150 RA=0
160 LA=0
170 TC=0
180 CALL SCREEN(2)
190 GOSUB 1890
200 FOR L=1 TO 3
210 CALL HCHAR(21,L+1,91)
220 NEXT L
230 FOR L=1 TO 5
240 CALL HCHAR(21,L+26,92)
250 NEXT L
260 CALL SCREEN(8)
270 CALL COLOR(11,3,8)
280 CALL COLOR(12,9,8)
290 TC=TC+1
300 GOSUB 2090
310 GOSUB 2090
320 IF LK<>3 THEN 360
330 CALL CLEAR
340 PRINT "COMPUTER VICTORY IN";TC
350 GOTO 390
360 IF RK<>5 THEN 490
370 CALL CLEAR
380 PRINT "PLAYER VICTORY IN";TC
390 CALL KEY(0,P,S)
400 IF S=0 THEN 390
410 FOR L=1 TO 5
420 LUFTROW(L)=0
430 LUFTCOL(L)=0
440 IF L>3 THEN 470
450 RAFROW(L)=0
460 RAFCOL(L)=0
470 NEXT L
480 GOTO 120
490 FOR ROLL=1 TO 12
500 CALL SOUND(-1,-5,15+MOVE)
510 MOVE=INT(RND*6)+1
520 CALL HCHAR(23,4,48+MOVE)
530 NEXT ROLL
540 CALL SOUND(75,3000,8)
550 TOTMOVE=MOVE
560 IF MOVE=6 THEN 600
570 IF RA=0 THEN 290
580 IF LK>=RA THEN 290
590 GOTO 1060
600 IF RA=3 THEN 1060
610 FOR L=1 TO 15
620 CALL HCHAR(22,L+1,ASC(SEG$("TAKE OFF (Y/N)?",L,1)))
630 NEXT L
640 CALL KEY(0,KEY,STATUS)
650 IF RA=0 THEN 690
660 IF RA-LK<=0 THEN 690
670 IF STATUS=0 THEN 640
680 IF KEY<>89 THEN 1020
690 FOR L=1 TO 15
700 CALL HCHAR(22,L+1,ASC(SEG$("CHOOSE PATH    ",L,1)))
710 NEXT L
720 CALL KEY(0,PATH,STATUS)
730 IF STATUS=0 THEN 720
740 IF PATH<>49 THEN 760
750 GOTO 790
760 IF PATH<>50 THEN 780
770 GOTO 790
780 IF PATH<>51 THEN 720
790 RA=RA+1
800 CALL HCHAR(21,5-RA,32)
810 PATH=PATH-48
820 CALL GCHAR(18,16+PATH*4,CHECK)
830 IF CHECK=102 THEN 920
840 CALL HCHAR(18,16+PATH*4,32)
850 CALL SOUND(500,110,0)
860 CALL SOUND(500,110,0)
870 CALL HCHAR(18,16+PATH*4,CHECK)
880 CALL HCHAR(21,5-RA,91)
890 RA=RA-1
900 CALL HCHAR(22,2,32,15)
910 GOTO 290
920 OPPLANE=4-RA
930 RAFROW(OPPLANE)=8
940 RAFCOL(OPPLANE)=8+(PATH*2)
950 CALL HCHAR(22,2,32,15)
960 FOR S=1 TO 25
970 CALL SOUND(-1,108+(S*2),25)
980 CALL SOUND(5,-7,S-1)
990 NEXT S
1000 CALL HCHAR(RAFROW(OPPLANE)*2+2,RAFCOL(OPPLANE)*2,FIELD(RAFROW(OPPLANE),RAFCOL(OPPLANE))+16)
1010 GOTO 290
1020 IF KEY<>78 THEN 640
1030 CALL HCHAR(22,2,32,15)
1040 MOVE=0
1050 GOTO 290
1060 FOR CHPLANE=1 TO 3
1070 IF MOVE>0 THEN 1100
1080 CHPLANE=3
1090 GOTO 1860
1100 IF RAFROW(CHPLANE)<>0 THEN 1120
1110 GOTO 1860
1120 CALL HCHAR(RAFROW(CHPLANE)*2+2,RAFCOL(CHPLANE)*2,32)
1130 CALL KEY(0,DIRECT,STATUS)
1140 CALL HCHAR(RAFROW(CHPLANE)*2+2,RAFCOL(CHPLANE)*2,FIELD(RAFROW(CHPLANE),RAFCOL(CHPLANE))+16)
1150 IF STATUS=0 THEN 1120
1160 IF DIRECT=32 THEN 1860
1170 GOTO 1210
1180 IF MOVE=0 THEN 1860
1190 CALL KEY(0,DIRECT,STATUS)
1200 IF STATUS=0 THEN 1190
1210 IF DIRECT<>73 THEN 1410
1220 IF RAFCOL(CHPLANE)<2 THEN 1380
1230 CALL GCHAR(RAFROW(CHPLANE)*2,RAFCOL(CHPLANE)*2-2,DEST)
1240 IF DEST<96 THEN 1380
1250 IF DEST<120 THEN 1300
1260 HITROW=RAFROW(CHPLANE)-1
1270 HITCOL=RAFCOL(CHPLANE)-1
1280 GOSUB 2970
1290 GOSUB 3150
1300 CALL HCHAR(RAFROW(CHPLANE)*2+2,RAFCOL(CHPLANE)*2,FIELD(RAFROW(CHPLANE),RAFCOL(CHPLANE)))
1310 RAFROW(CHPLANE)=RAFROW(CHPLANE)-1
1320 RAFCOL(CHPLANE)=RAFCOL(CHPLANE)-1
1330 CALL HCHAR(RAFROW(CHPLANE)*2+2,RAFCOL(CHPLANE)*2,FIELD(RAFROW(CHPLANE),RAFCOL(CHPLANE))+16)
1340 MOVE=MOVE-1
1350 IF MOVE>0 THEN 1220
1360 CHPLANE=5
1370 GOTO 1860
1380 CALL SOUND(25,110,0)
1390 MOVE=0
1400 GOTO 1180
1410 IF DIRECT<>80 THEN 1560
1420 CALL GCHAR(RAFROW(CHPLANE)*2,RAFCOL(CHPLANE)*2+2,DEST)
1430 IF DEST<96 THEN 1380
1440 IF DEST<120 THEN 1490
1450 HITROW=RAFROW(CHPLANE)-1
1460 HITCOL=RAFCOL(CHPLANE)+1
1470 GOSUB 2970
1480 GOSUB 3150
1490 CALL HCHAR(RAFROW(CHPLANE)*2+2,RAFCOL(CHPLANE)*2,FIELD(RAFROW(CHPLANE),RAFCOL(CHPLANE)))
1500 RAFROW(CHPLANE)=RAFROW(CHPLANE)-1
1510 RAFCOL(CHPLANE)=RAFCOL(CHPLANE)+1
1520 CALL HCHAR(RAFROW(CHPLANE)*2+2,RAFCOL(CHPLANE)*2,FIELD(RAFROW(CHPLANE),RAFCOL(CHPLANE))+16)
1530 MOVE=MOVE-1
1540 IF MOVE>0 THEN 1420
1550 GOTO 1860
1560 IF DIRECT<>75 THEN 1720
1570 IF RAFCOL(CHPLANE)<2 THEN 1380
1580 CALL GCHAR(RAFROW(CHPLANE)*2+4,RAFCOL(CHPLANE)*2-2,DEST)
1590 IF DEST<96 THEN 1380
1600 IF DEST<120 THEN 1650
1610 HITROW=RAFROW(CHPLANE)+1
1620 HITCOL=RAFCOL(CHPLANE)-1
1630 GOSUB 2970
1640 GOSUB 3150
1650 CALL HCHAR(RAFROW(CHPLANE)*2+2,RAFCOL(CHPLANE)*2,FIELD(RAFROW(CHPLANE),RAFCOL(CHPLANE)))
1660 RAFROW(CHPLANE)=RAFROW(CHPLANE)+1
1670 RAFCOL(CHPLANE)=RAFCOL(CHPLANE)-1
1680 CALL HCHAR(RAFROW(CHPLANE)*2+2,RAFCOL(CHPLANE)*2,FIELD(RAFROW(CHPLANE),RAFCOL(CHPLANE))+16)
1690 MOVE=MOVE-1
1700 IF MOVE>0 THEN 1570
1710 GOTO 1860
1720 IF DIRECT<>76 THEN 1180
1730 CALL GCHAR(RAFROW(CHPLANE)*2+4,RAFCOL(CHPLANE)*2+2,DEST)
1740 IF DEST<96 THEN 1380
1750 IF DEST<120 THEN 1800
1760 HITROW=RAFROW(CHPLANE)+1
1770 HITCOL=RAFCOL(CHPLANE)+1
1780 GOSUB 2970
1790 GOSUB 3150
1800 CALL HCHAR(RAFROW(CHPLANE)*2+2,RAFCOL(CHPLANE)*2,FIELD(RAFROW(CHPLANE),RAFCOL(CHPLANE)))
1810 RAFROW(CHPLANE)=RAFROW(CHPLANE)+1
1820 RAFCOL(CHPLANE)=RAFCOL(CHPLANE)+1
1830 CALL HCHAR(RAFROW(CHPLANE)*2+2,RAFCOL(CHPLANE)*2,FIELD(RAFROW(CHPLANE),RAFCOL(CHPLANE))+16)
1840 MOVE=MOVE-1
1850 IF MOVE>0 THEN 1730
1860 NEXT CHPLANE
1870 IF MOVE>0 THEN 1060
1880 GOTO 290
1890 FOR L=1 TO 15
1900 CALL HCHAR(1,L+9,ASC(SEG$("FIGHTER COMMAND",L,1)),1)
1910 NEXT L
1920 FOR R=1 TO 8
1930 FOR C=1 TO 15
1940 IF FIELD(R,C)=0 THEN 1960
1950 CALL HCHAR(R*2+2,C*2,FIELD(R,C),1)
1960 NEXT C
1970 NEXT R
1980 CALL HCHAR(19,20,35)
1990 CALL HCHAR(19,24,36)
2000 CALL HCHAR(19,28,37)
2010 RETURN
2020 FOR ROW=1 TO 8
2030 FOR COL=1 TO 15
2040 READ TYPE
2050 FIELD(ROW,COL)=TYPE
2060 NEXT COL
2070 NEXT ROW
2080 RETURN
2090 ROLL=INT(RND*6)+1
2100 IF ROLL=6 THEN 2130
2110 IF LA=0 THEN 2960
2120 GOTO 2260
2130 IF LA=5 THEN 2260
2140 ROW=INT(RND*8)+1
2150 COL=INT(RND*15)+1
2160 CALL GCHAR(ROW*2+2,COL*2,DEST)
2170 IF DEST<96 THEN 2140
2180 IF DEST>119 THEN 2140
2190 CALL SOUND(35,115,0)
2200 CALL SOUND(35,110,0)
2210 LA=LA+1
2220 LUFTROW(LA)=ROW
2230 LUFTCOL(LA)=COL
2240 CALL HCHAR(LUFTROW(LA)*2+2,LUFTCOL(LA)*2,DEST+24)
2250 GOTO 2960
2260 FOR PLANENO=1 TO 5
2270 IF LUFTROW(PLANENO)=0 THEN 2950
2280 DIRECT=INT(RND*4)+1
2290 IF DIRECT<>1 THEN 2480
2300 IF LUFTCOL(PLANENO)<2 THEN 2950
2310 CALL GCHAR(LUFTROW(PLANENO)*2,LUFTCOL(PLANENO)*2-2,DEST)
2320 IF DEST<96 THEN 2390
2330 IF DEST<112 THEN 2410
2340 IF DEST>119 THEN 2390
2350 HITCOL=LUFTCOL(PLANENO)-1
2360 HITROW=LUFTROW(PLANENO)-1
2370 GOSUB 3030
2380 GOTO 2410
2390 DIRECT=INT(RND*3)+2
2400 GOTO 2480
2410 CALL HCHAR(LUFTROW(PLANENO)*2+2,LUFTCOL(PLANENO)*2,FIELD(LUFTROW(PLANENO),LUFTCOL(PLANENO)))
2420 LUFTROW(PLANENO)=LUFTROW(PLANENO)-1
2430 LUFTCOL(PLANENO)=LUFTCOL(PLANENO)-1
2440 CALL HCHAR(LUFTROW(PLANENO)*2+2,LUFTCOL(PLANENO)*2,FIELD(LUFTROW(PLANENO),LUFTCOL(PLANENO))+24)
2450 ROLL=ROLL-1
2460 IF ROLL>0 THEN 2300
2470 GOTO 2950
2480 IF DIRECT<>2 THEN 2660
2490 CALL GCHAR(LUFTROW(PLANENO)*2,LUFTCOL(PLANENO)*2+2,DEST)
2500 IF DEST<96 THEN 2570
2510 IF DEST<112 THEN 2590
2520 IF DEST>119 THEN 2570
2530 HITCOL=LUFTCOL(PLANENO)+1
2540 HITROW=LUFTROW(PLANENO)-1
2550 GOSUB 3030
2560 GOTO 2590
2570 DIRECT=INT(RND*2)+3
2580 GOTO 2660
2590 CALL HCHAR(LUFTROW(PLANENO)*2+2,LUFTCOL(PLANENO)*2,FIELD(LUFTROW(PLANENO),LUFTCOL(PLANENO)))
2600 LUFTROW(PLANENO)=LUFTROW(PLANENO)-1
2610 LUFTCOL(PLANENO)=LUFTCOL(PLANENO)+1
2620 CALL HCHAR(LUFTROW(PLANENO)*2+2,LUFTCOL(PLANENO)*2,FIELD(LUFTROW(PLANENO),LUFTCOL(PLANENO))+24)
2630 ROLL=ROLL-1
2640 IF ROLL>0 THEN 2490
2650 GOTO 2950
2660 IF DIRECT<>3 THEN 2950
2670 CALL GCHAR(LUFTROW(PLANENO)*2+4,LUFTCOL(PLANENO)*2+2,DEST)
2680 IF DEST<96 THEN 2810
2690 IF DEST<112 THEN 2740
2700 IF DEST>119 THEN 2810
2710 HITCOL=LUFTCOL(PLANENO)+1
2720 HITROW=LUFTROW(PLANENO)+1
2730 GOSUB 3030
2740 CALL HCHAR(LUFTROW(PLANENO)*2+2,LUFTCOL(PLANENO)*2,FIELD(LUFTROW(PLANENO),LUFTCOL(PLANENO)))
2750 LUFTROW(PLANENO)=LUFTROW(PLANENO)+1
2760 LUFTCOL(PLANENO)=LUFTCOL(PLANENO)+1
2770 CALL HCHAR(LUFTROW(PLANENO)*2+2,LUFTCOL(PLANENO)*2,FIELD(LUFTROW(PLANENO),LUFTCOL(PLANENO))+24)
2780 ROLL=ROLL-1
2790 IF ROLL>0 THEN 2670
2800 GOTO 2950
2810 IF LUFTCOL(PLANENO)<2 THEN 2950
2820 CALL GCHAR(LUFTROW(PLANENO)*2+4,LUFTCOL(PLANENO)*2-2,DEST)
2830 IF DEST<96 THEN 2950
2840 IF DEST<112 THEN 2890
2850 IF DEST>119 THEN 2950
2860 HITCOL=LUFTCOL(PLANENO)-1
2870 HITROW=LUFTROW(PLANENO)+1
2880 GOSUB 3030
2890 CALL HCHAR(LUFTROW(PLANENO)*2+2,LUFTCOL(PLANENO)*2,FIELD(LUFTROW(PLANENO),LUFTCOL(PLANENO)))
2900 LUFTROW(PLANENO)=LUFTROW(PLANENO)+1
2910 LUFTCOL(PLANENO)=LUFTCOL(PLANENO)-1
2920 CALL HCHAR(LUFTROW(PLANENO)*2+2,LUFTCOL(PLANENO)*2,FIELD(LUFTROW(PLANENO),LUFTCOL(PLANENO))+24)
2930 ROLL=ROLL-1
2940 IF ROLL>0 THEN 2820
2950 NEXT PLANENO
2960 RETURN
2970 FOR G=1 TO 12
2980 CALL SCREEN(INT(RND*14)+3)
2990 CALL SOUND(-1,-6,0)
3000 NEXT G
3010 CALL SCREEN(8)
3020 RETURN
3030 GOSUB 2970
3040 LK=LK+1
3050 FOR RAFREF=1 TO 3
3060 IF RAFROW(RAFREF)<>HITROW THEN 3100
3070 IF RAFCOL(RAFREF)<>HITCOL THEN 3100
3080 RAFDOWN=RAFREF
3090 RAFREF=5
3100 NEXT RAFREF
3110 RAFCOL(RAFDOWN)=0
3120 RAFROW(RAFDOWN)=0
3130 ROLL=0
3140 RETURN
3150 RK=RK+1
3160 FOR P=1 TO 5
3170 IF LUFTROW(P)<>HITROW THEN 3210
3180 IF LUFTCOL(P)<>HITCOL THEN 3210
3190 LD=P
3200 P=5
3210 NEXT P
3220 LUFTCOL(LD)=0
3230 LUFTROW(LD)=0
3240 MOVE=0
3250 CALL HCHAR(21,26+RK,88)
3260 RETURN
3270 CALL CHAR(97,"81423C24243C4281")
3280 CALL CHAR(96,"00001824243C4281")
3290 CALL CHAR(98,"01023C24243C0201")
3300 CALL CHAR(99,"80403C24243C4080")
3310 CALL CHAR(100,"00003C24243C0201")
3320 CALL CHAR(101,"00003C24243C4080")
3330 CALL CHAR(102,"81423C2424180000")
3340 CALL CHAR(103,"01023C24243C4281")
3350 CALL CHAR(113,"81423C3C3C3C4281")
3360 CALL CHAR(112,"00003C3C3C3C4281")
3370 CALL CHAR(114,"01023C3C3C3C0201")
3380 CALL CHAR(115,"80403C3C3C3C4080")
3390 CALL CHAR(116,"00003C3C3C3C0201")
3400 CALL CHAR(117,"00003C3C3C3C4080")
3410 CALL CHAR(118,"81423C3C3C3C0000")
3420 CALL CHAR(119,"01023C3C3C3C4281")
3430 CALL CHAR(121,"81423C3C3C3C4281")
3440 CALL CHAR(120,"00003C3C3C3C4281")
3450 CALL CHAR(122,"01023C3C3C3C0201")
3460 CALL CHAR(123,"80403C3C3C3C4080")
3470 CALL CHAR(124,"00003C3C3C3C0201")
3480 CALL CHAR(125,"00003C3C3C3C4080")
3490 CALL CHAR(126,"81423C3C3C3C0000")
3500 CALL CHAR(127,"01023C3C3C3C4281")
3510 CALL CHAR(91,"0000321C1C664000")
3520 CALL CHAR(92,"0000002418182600")
3530 CALL CHAR(35,"0202444840404000")
3540 CALL CHAR(36,"0202E428E080E000")
3550 CALL CHAR(37,"0202E428E020E000")
3560 RETURN
3570 DATA 0,0,0,0,0,0,96,0,96,0,0,0,0,0,0
3580 DATA 0,0,0,100,0,97,0,97,0,97,0,101,0,0,0
3590 DATA 0,0,0,0,97,0,97,0,97,0,97,0,0,0,0
3600 DATA 0,0,0,103,0,97,0,97,0,97,0,97,0,96,0
3610 DATA 100,0,97,0,97,0,97,0,97,0,97,0,97,0,99
3620 DATA 0,98,0,97,0,97,0,97,0,97,0,97,0,99,0
3630 DATA 98,0,97,0,97,0,97,0,97,0,97,0,97,0,99
3640 DATA 0,102,0,102,0,102,0,102,0,102,0,102,0,102,0
